module.exports = {
  // config 实际上是一个实例对象
  chainWebpack: config => {
    // when 方法接收两个参数，
    // 第一个参数指定运行的环境
    // 第二个参数，就是当前运行环境的回调函数
    config.when(process.env.NODE_ENV === 'production', config => {
      config.entry('app').clear().add('./src/main-prod.js')

      // 默认情况下，所有的插件和包，都会打包到一个 js 文件中
      // 通过 externals 配置的包，不会打包到默认的 js 文件中
      config.set('externals', {
        vue: 'Vue',
        axios: 'axios',
        lodash: '_',
        echarts: 'echarts',
        nprogress: 'NProgress',
        'vue-quill-editor': 'VueQuillEditor'
      })

      // 通过 plugin 指定插件，然后调用 tap 方法，在回调函数中声明变量即可
      config.plugin('html').tap(args => {
        args[0].isProd = true
        return args
      })
    })

    config.when(process.env.NODE_ENV === 'development', config => {
      config.entry('app').clear().add('./src/main-dev.js')

      config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
      })
    })
  }
}
